/**
 * 字典常量文件
 * 统一管理系统中使用的各种字典数据，确保数据一致性
 */

/**
 * 智能体分类接口定义
 */
export interface CategoryItem {
  /** 分类显示标签 */
  label: string
  /** 分类值 */
  value: string
}

/**
 * 智能体分类字典常量
 * 统一定义所有分类选项，确保在不同组件中保持一致
 */
export const AGENT_CATEGORIES: CategoryItem[] = [
  { label: '编程助手', value: 'programming' },
  { label: '写作助手', value: 'writing' },
  { label: '数据分析', value: 'data-analysis' },
  { label: '创意设计', value: 'design' },
  { label: '教育培训', value: 'education' },
  { label: '商务办公', value: 'business' },
  { label: '生活服务', value: 'lifestyle' },
  { label: '其他', value: 'other' }
]

/**
 * 分类值到显示名称的映射
 * 用于在组件中快速获取分类的显示名称
 */
export const CATEGORY_DISPLAY_MAP: Record<string, string> = AGENT_CATEGORIES.reduce(
  (map, category) => {
    map[category.value] = category.label
    return map
  },
  {} as Record<string, string>
)

/**
 * 获取分类显示名称的工具函数
 * @param categoryValue 分类值
 * @returns 分类显示名称，如果找不到则返回原值
 */
export function getCategoryDisplayName(categoryValue: string): string {
  return CATEGORY_DISPLAY_MAP[categoryValue] || categoryValue
}

/**
 * 验证分类值是否有效的工具函数
 * @param categoryValue 分类值
 * @returns 是否为有效的分类值
 */
export function isValidCategoryValue(categoryValue: string): boolean {
  return AGENT_CATEGORIES.some(category => category.value === categoryValue)
}

/**
 * 获取所有分类值的数组
 * @returns 所有分类值的数组
 */
export function getAllCategoryValues(): string[] {
  return AGENT_CATEGORIES.map(category => category.value)
}

/**
 * 获取所有分类标签的数组
 * @returns 所有分类标签的数组
 */
export function getAllCategoryLabels(): string[] {
  return AGENT_CATEGORIES.map(category => category.label)
}